home *** CD-ROM | disk | FTP | other *** search
/ Playboy Electronic Datebook / Playboy Electronic Datebook - Disk 2.img / MISC.IN_ / MISC.IN
Text File  |  1993-10-22  |  27KB  |  677 lines

  1.  
  2.  
  3. DECLARE SUB RemoveThemeFiles
  4. DECLARE SUB MonthOptions
  5. DECLARE FUNCTION ChangeDate () AS INTEGER
  6. DECLARE FUNCTION GetInstallRes (szThemeRes$) AS STRING
  7. DECLARE FUNCTION ChooseResolution (szDefaultRes$, ResList$) AS STRING
  8. DECLARE FUNCTION MsgYesNo(szMsgPart1$, szMsgPart2$, szMsgCaption$) AS INTEGER
  9.  
  10. CONST  YES = 1
  11. CONST  NO  = 0
  12.  
  13. GLOBAL   RES_TEXT_XGA$
  14. GLOBAL   RES_TEXT_VGA$
  15. GLOBAL   RES_TEXT_EGA$
  16.  
  17.  
  18. '**
  19. '**     Remove -
  20. '**         Reads playboy.ini file to get all installed themes. Formats a
  21. '**         string to describe the ini line relating to the file.
  22. '**         Dialog is a list box, listing formatted strings.  When item(s)
  23. '**         are highlighted and Remove button is pressed, the returned
  24. '**         strings are parsed to get back to the ini line, the file is
  25. '**         deleted from disk and the line is removed from the ini. Returns
  26. '**         when users presses Done.
  27. '**     Arguements - None
  28. '**     Returns - Nothing
  29. '******************************************************************
  30. SUB RemoveThemeFiles STATIC
  31. '$IFDEF REMOVE
  32. '$IFDEF DEBUG
  33. DIM pStrBuf AS POINTER TO STRING *256
  34. '$ENDIF
  35. REMOVE_SETUP:
  36.     CursorSave% = ShowWaitCursor()
  37.  
  38.     LISTITEMSIN$ = "ListItemsIn"
  39.     LISTITEMSOUT$ = "ListItemsOut"
  40.     THEMELIST$ = "ThemeList"
  41.     FOR i% = 1 TO iMaxNumTP% STEP 1
  42.         IF DoesIniKeyExist(ini$, INI_SEC_THEME_PACKS, INI_KEY_TP + LTRIM$(STR$(i%))) THEN
  43.             szThemePack$ = GetIniKeyString(ini$, INI_SEC_THEME_PACKS, INI_KEY_TP + LTRIM$(STR$(i%)))
  44.  
  45.             IF DoesIniKeyExist(ini$, szThemePack$, INI_KEY_MASTER) THEN
  46.                 AddListItem THEMELIST$, szThemePack$
  47.  
  48.                 IF DoesIniKeyExist(ini$, szThemePack$, INI_KEY_FILE) THEN
  49.                     AddListItem LISTITEMSIN$, szThemePack$
  50.                 ELSEIF DoesIniKeyExist(ini$, szThemePack$, INI_KEY_FILE + LTRIM$(STR$(0))) THEN
  51.                     FOR f% = 0 TO iMaxNumTP% STEP 1   ''arbitrary limit
  52.                         IF DoesIniKeyExist(ini$, szThemePack$, INI_KEY_FILE + LTRIM$(STR$(f%)) ) THEN
  53.                             AddListItem LISTITEMSIN$, szThemePack$
  54.                             EXIT FOR
  55.                         END IF
  56.                     NEXT f%
  57.                 ELSE
  58.                     THEMEFILES$ = "ThemeFiles"
  59.                     t% = MakeListIniKeys(ini$, szThemePack$)    ''function makes list from INI file, not INF file
  60.                     ''List will be created as ThemeFiles, it will be a list of keys for theme section
  61.                     IF GetListLength(THEMEFILES$) THEN  ''is list empty?
  62.                         FOR j% = 1 TO GetListLength(THEMEFILES$) STEP 1
  63.                             szFile$ = GetListItem(THEMEFILES$, j%)
  64.                             szFileExpanded$ = ExpandMonthKey(szFile$)
  65.                             IF LEN(szFileExpanded$) THEN    ''if not month ref, don't add to list
  66.                                 AddListItem LISTITEMSIN$, szThemePack$ + ": " + szFileExpanded$ '' add formatted string to list
  67.  
  68.                             END IF
  69.                         NEXT j%
  70.                     END IF
  71.                     IF GetListLength(THEMEFILES$) <> 0 THEN
  72. '$IFDEF DEBUG
  73.                         PRINT "REMOVING THEMEFILES$ SYMBOL"
  74. '$ENDIF
  75.                         RemoveSymbol THEMEFILES$
  76.                     END IF
  77.                 END IF
  78.             END IF
  79.         END IF
  80.     NEXT i%
  81.     RestoreCursor CursorSave%
  82. REMOVEL1:
  83.     sz$ = UIStartDlg(CUIDLL$, REMOVEDLG, "FRemoveDlgProc", REMOVEHELP, HELPPROC$)
  84.  
  85.     IF sz$ = "REMOVE" THEN
  86.         CursorSave% = ShowWaitCursor()
  87.         FOR i% = 1 TO GetListLength(LISTITEMSOUT$) STEP 1
  88.             szListItem$ = GetListItem(LISTITEMSOUT$, i%)
  89.             FOR t% = 1 TO GetListLength(THEMELIST$) STEP 1
  90.  
  91.                 szCurTheme$ = GetListItem(THEMELIST$, t%)
  92.  
  93.                 IF INSTR(szListItem$, szCurTheme$) <> 0 THEN
  94.                     IF LEN(szListItem$) = LEN(szCurTheme$) THEN
  95.                         IF DoesIniKeyExist(ini$, szCurTheme$, INI_KEY_FILE) THEN
  96.                             szFilePath$ = GetIniKeyString(Ini$, szCurTheme$, INI_KEY_FILE)
  97.                             IF DoesFileExist(szFilePath$, femReadWrite) THEN
  98.                                 RemoveFile szFilePath$, cmoNone
  99.                             ELSE
  100.                                 imbRC% = DoMsgBox(szListItem$ + ERROR_REMOVE, ERROR_CAPTION, MB_OK+MB_TASKMODAL+MB_ICONHAND)
  101.                             END IF
  102.                             RemoveIniKey Ini$, szListItem$, INI_KEY_FILE, cmoNone
  103.                         ELSEIF DoesIniKeyExist(ini$, szCurTheme$, INI_KEY_FILE + LTRIM$(STR$(0))) THEN
  104.                             FOR f% = 0 TO iMaxNumTP% STEP 1   ''arbitrary limit
  105.                                 IF DoesIniKeyExist(ini$, szCurTheme$, INI_KEY_FILE + LTRIM$(STR$(f%)) ) THEN
  106.                                     szFilePath$ = GetIniKeyString(Ini$, szCurTheme$, INI_KEY_FILE + LTRIM$(STR$(f%)))
  107.                                     IF DoesFileExist(szFilePath$, femReadWrite) THEN
  108.                                         RemoveFile szFilePath$, cmoNone
  109.                                     ELSE
  110.                                         imbRC% = DoMsgBox(szListItem$ + ERROR_REMOVE, ERROR_CAPTION, MB_OK+MB_TASKMODAL+MB_ICONHAND)
  111.                                     END IF
  112.                                     RemoveIniKey Ini$, szCurTheme$, INI_KEY_FILE + LTRIM$(STR$(f%)), cmoNone
  113.                                 END IF
  114.                             NEXT f%
  115.                         END IF
  116.                         EXIT FOR
  117.                     ELSEIF LTRIM$(MID$(szListItem$, (LEN(szCurTheme$) + 1),1)) = ":" THEN
  118.  
  119.                         szExpandedIniKey$ = LTRIM$(MID$(szListItem$, LEN(szCurTheme$) + 2))  ''' account for ": "
  120. '$IFDEF DEBUG
  121.                         PRINT "szExpandedIniKey$ = " + szExpandedIniKey$
  122. '$ENDIF
  123.                         IF szExpandedIniKey$ = EXPANDED_COLORDATA THEN
  124.                             szIniKey$ = INI_KEY_COLORDATA
  125.                         ELSE
  126.                             szIniKey$ = MID$(szExpandedIniKey$, 1,3)+MID$(szExpandedIniKey$, 5,4)
  127.                             SELECT CASE RTRIM$(MID$(szExpandedIniKey$, 10))
  128.                                 CASE EXPANDED_XGA
  129.                                     szIniKey$ = szIniKey$ + INI_KEY_XGA
  130.                                 CASE EXPANDED_VGA
  131.                                     szIniKey$ = szIniKey$ + INI_KEY_VGA
  132.                                 CASE EXPANDED_EGA
  133.                                     szIniKey$ = szIniKey$ + INI_KEY_EGA
  134.                                 CASE ELSE
  135.                                     szIniKey$ = szIniKey$ + INI_KEY_IND
  136.                             END SELECT
  137. '$IFDEF DEBUG
  138.                             PRINT "szIniKey$  = " + szIniKey$
  139. '$ENDIF
  140.                         END IF
  141.                         szFilePath$ = GetIniKeyString(Ini$, szCurTheme$, szIniKey$)
  142. '$IFDEF DEBUG
  143.                         PRINT "szFilePath$ = " + szFilePath$
  144. '$ENDIF
  145.                         IF LEN(szFilePath$) <> 0 THEN
  146.                             IF DoesFileExist(szFilePath$, femReadWrite) THEN
  147.                                 RemoveFile szFilePath$, cmoNone
  148.                             ELSE
  149.                                 imbRC% = DoMsgBox(szListItem$ + ERROR_REMOVE, ERROR_CAPTION, MB_OK+MB_TASKMODAL+MB_ICONHAND)
  150.                             END IF
  151.                         ELSE
  152.                             imbRC% = DoMsgBox(szListItem$ + ERROR_REMOVE, ERROR_CAPTION, MB_OK+MB_TASKMODAL+MB_ICONHAND)
  153.                         END IF
  154.                         RemoveIniKey Ini$, szCurTheme$, szIniKey$, cmoNone
  155.                         EXIT FOR
  156.                     END IF
  157.                 END IF
  158.             NEXT t%
  159.         NEXT i%
  160.         RestoreCursor CursorSave%
  161.  
  162.  
  163.         RemoveSymbol LISTITEMSIN$
  164.         RemoveSymbol LISTITEMSOUT$
  165.         IF GetListLength(THEMELIST$) <> 0 THEN
  166.             RemoveSymbol THEMELIST$
  167.         END IF
  168.         GOTO REMOVE_SETUP
  169.     ELSEIF sz$ = "REACTIVATE" THEN
  170.         GOTO REMOVEL1
  171.     ELSE            ''CONTINUE
  172.         UIPop 1
  173.         RemoveSymbol LISTITEMSIN$
  174.         RemoveSymbol LISTITEMSOUT$
  175.         IF GetListLength(THEMELIST$) <> 0 THEN
  176.             RemoveSymbol THEMELIST$
  177.         END IF
  178.     END IF
  179. '$ENDIF
  180. END SUB
  181.  
  182. '**
  183. '**     MonthOptions -
  184. '**         If theme type is SINGLEFILE a formatted string describing
  185. '**         the file (num months, etc) is listed.  User can select to
  186. '**         install the data file by this.  If multi-file months type
  187. '**         theme, a string is added for each month. The user can
  188. '**         select the individual months to install.
  189. '**         The date can be changed ONLY if it is a original install
  190. '**         for the theme.  If not the dlgproc will hide the date button
  191. '**         and change the text. Only when OK is selected are the global
  192. '**         month options changed.
  193. '**     Arguements - None
  194. '**     Returns - Nothing
  195. '******************************************************************
  196. SUB MonthOptions STATIC
  197. '$IFDEF MONTHS
  198. DIM     NewOpt%(24)
  199.     FOR i% = 0 TO (iNumFiles%-1) STEP 1
  200.         NewOpt%(i%) = MONTHOPT(i%)
  201.     NEXT i%
  202. DO_MONTHS_SETUP:
  203.     CursorSave% = ShowWaitCursor()
  204.     '' Debug PRINT start_m%
  205.     '' Debug PRINT start_y%
  206.     IF (bThemeFileType% = SINGLEFILE) THEN
  207.         MONTHLIST$(0) = THEME$ + " - " + LTRIM$(STR$(iNumMonths%)) + " " + MONTHS
  208.     ELSEIF(bThemeFileType% = DATAFILE) THEN
  209.         MONTHLIST$(0) = THEME$
  210.     ELSE
  211.         FOR i% = 0 TO (iNumFiles%-1) STEP 1
  212.                 CUR_MON_YEAR$ = Month_Year_ToStr((start_m%+i%), (start_y%), " ")    '' add space - 1
  213.                 ''debug
  214.                 '' Debug PRINT CUR_MON_YEAR$
  215.                 MONTHLIST$(i%) = THEME$+" "+CUR_MON_YEAR$
  216.         NEXT i%
  217.     END IF
  218.     LISTITEMSIN$ = "ListItemsIn"
  219.     LISTITEMSOUT$ = "ListItemsOut"
  220.     FOR i% = 0 TO (iNumFiles%-1) STEP 1
  221.         AddListItem LISTITEMSIN$, MONTHLIST(i%)
  222.         IF NewOpt%(i%) = TRUE THEN
  223.             AddListItem LISTITEMSOUT$, MONTHLIST$(i%)
  224.             '' Debug PRINT MONTHLIST$(i%)
  225.         END IF
  226.     NEXT i%
  227.  
  228.     ''FOR i% = 0 TO (iNumFiles%-1) STEP 1
  229.     ''NEXT i%
  230.  
  231.     IF (bThemeExists%) OR (bNoExpire% = TRUE) THEN
  232.         SetSymbolValue "ButtonState", "OFF"
  233.     ELSE
  234.         SetSymbolValue "ButtonState", "ON"
  235.     END IF
  236.     RestoreCursor CursorSave%
  237. DO_MONTHSL1:
  238.     EX_TEXT1$ = "Text1"
  239.     IF (bNoExpire% = TRUE) THEN
  240.         SetSymbolValue EX_TEXT1$, DLG_MONTH_COMMENT
  241.     ELSE
  242.         SetSymbolValue EX_TEXT1$, DLG_TEXT_MONTH_EXPIRE + szExpireText$ + DLG_TEXT_MONTH_EXPIREPT2
  243.     END IF
  244.  
  245.     sz$ = UIStartDlg(CUIDLL$, MONTHLISTDLG, "FMultiDlgProc", MONTHHELP, HELPPROC$)
  246.  
  247.         IF GetListLength(ListItemsOut) > 0 THEN
  248.             CursorSave% = ShowWaitCursor()
  249.             FOR i% = 0 TO (iNumFiles%-1) STEP 1
  250.                 FOR j% = 1 TO GetListLength(ListItemsOut) STEP 1
  251.                     IF MONTHLIST$(i%) = GetListItem(ListItemsOut, j%) THEN
  252.                         NewOpt%(i%) = TRUE
  253.  
  254.                         EXIT FOR
  255.                     ELSE
  256.                         NewOpt%(i%) = FALSE
  257.                     END IF
  258.                 NEXT j%
  259.             NEXT i%
  260.             RestoreCursor CursorSave%
  261.         ELSE
  262.             FOR j% = 0 TO (iNumFiles%-1) STEP 1
  263.                 NewOpt%(j%) = FALSE
  264.             NEXT j%
  265.         END IF
  266.  
  267.     IF sz$ = "CONTINUE" THEN
  268.  
  269.         UIPop 1
  270.         FOR i% = 0 TO (iNumFiles%-1) STEP 1
  271.             MONTHOPT%(i%) = NewOpt%(i%)
  272.         NEXT i%
  273.         RemoveSymbol LISTITEMSIN$
  274.         RemoveSymbol LISTITEMSOUT$
  275.  
  276.     ELSEIF sz$ = "REACTIVATE" THEN
  277.         GOTO DO_MONTHSL1
  278.     ELSEIF sz$ = "DATE" THEN
  279.  
  280.         bDateChanged% = ChangeDate()
  281.  
  282.         IF bDateChanged% = TRUE THEN
  283.             RemoveSymbol LISTITEMSIN$
  284.             RemoveSymbol LISTITEMSOUT$
  285.             GOTO DO_MONTHS_SETUP
  286.         ELSE
  287.             GOTO DO_MONTHSL1
  288.         END IF
  289.     ELSE
  290.         UIPop 1
  291.         RemoveSymbol LISTITEMSIN$
  292.         RemoveSymbol LISTITEMSOUT$
  293.  
  294.     END IF
  295.  
  296. '$ENDIF
  297. END SUB
  298.  
  299. '**
  300. '**     ChangeDate -
  301. '**         saves current start date, brings up simple edit dialog.
  302. '**         Value returned from edit control is validated.  Errors if
  303. '**         value is not a valid date or is out of range. Otherwise,
  304. '**         returns.
  305. '**     Arguements - None
  306. '**     Returns -   TRUE if date has changed
  307. '**                 FALSE if date hasn't changed
  308. '***************************************************************************
  309. FUNCTION ChangeDate () STATIC AS INTEGER
  310.  
  311.     ChangeDate = FALSE
  312. '$IFDEF CHANGEDATE
  313.     old_start_m% = start_m%
  314.     old_start_y% = start_y%
  315. ASKDATEL1:
  316.     IF bDDOnDay% = TRUE THEN
  317. '$IFDEF INTL
  318.         SetSymbolValue "EditTextIn", PAD(LTRIM$(STR$(start_d%))) + DATE_SEPARATOR + PAD(LTRIM$(STR$(start_m%))) + DATE_SEPARATOR + LTRIM$(STR$(start_y%))
  319.         SetSymbolValue "EditFocus", "END"
  320.  
  321.         sz$ = UIStartDlg(CUIDLL$, STARTDATE_INTL, "FEditDlgProc", DATEHELP_INTL, HELPPROC$)
  322. '$ELSE
  323.         SetSymbolValue "EditTextIn", PAD(LTRIM$(STR$(start_m%))) + DATE_SEPARATOR + PAD(LTRIM$(STR$(start_d%))) + DATE_SEPARATOR + LTRIM$(STR$(start_y%))
  324.         SetSymbolValue "EditFocus", "END"
  325.  
  326.         sz$ = UIStartDlg(CUIDLL$, STARTDATE, "FEditDlgProc", DATEHELP, HELPPROC$)
  327. '$ENDIF
  328.     ELSE
  329.         SetSymbolValue "EditTextIn", PAD(LTRIM$(STR$(start_m%))) + DATE_SEPARATOR + LTRIM$(STR$(start_y%))
  330.         SetSymbolValue "EditFocus", "END"
  331.  
  332.         sz$ = UIStartDlg(CUIDLL$, STARTDATE_NODAY, "FEditDlgProc", DATEHELP_NODAY, HELPPROC$)
  333.     END IF
  334.  
  335.     IF sz$ = "CONTINUE" THEN
  336.         IF bDDOnDay% = TRUE THEN
  337.             szDateErrMsg$ = ERROR_DATE_DAY
  338.         ELSE
  339.             szDateErrMsg$ = ERROR_DATE_NODAY
  340.         END IF
  341.         szNewDate$ = LTRIM$(RTRIM$(GetSymbolValue("EditTextOut")))
  342.         IF (szNewDate <> GetSymbolValue("EditTextIn")) THEN
  343.             CursorSave% = ShowWaitCursor()
  344.             ChangeDate = TRUE
  345.             IF bDDOnDay% = TRUE THEN
  346.                 IF LEN(szNewDate$) <> 10 THEN
  347.                     imbRC% = DoMsgBox(szDateErrMsg$, ERROR_CAPTION, MB_OK+MB_TASKMODAL+MB_ICONHAND)
  348.                     RestoreCursor CursorSave%
  349.                     GOTO ASKDATEL1
  350.                 END IF
  351.             ELSE
  352.                 IF LEN(szNewDate$) <> 7 THEN
  353.                     imbRC% = DoMsgBox(szDateErrMsg$, ERROR_CAPTION, MB_OK+MB_TASKMODAL+MB_ICONHAND)
  354.                     RestoreCursor CursorSave%
  355.                     GOTO ASKDATEL1
  356.                 END IF
  357.             END IF
  358.             IF bDDOnDay% = TRUE THEN
  359. '$IFDEF INTL
  360.                 new_d% = VAL(MID$(szNewDate$, 1, 2))
  361.                 new_m% = VAL(MID$(szNewDate$, 4, 2))
  362.                 new_y% = VAL(MID$(szNewDate$, 7, 4))
  363. '$ELSE
  364.                 new_m% = VAL(MID$(szNewDate$, 1, 2))
  365.                 new_d% = VAL(MID$(szNewDate$, 4, 2))
  366.                 new_y% = VAL(MID$(szNewDate$, 7, 4))
  367. '$ENDIF
  368.             ELSE
  369.                 new_m% = VAL(MID$(szNewDate$, 1, 2))
  370.                 new_y% = VAL(MID$(szNewDate$, 4, 4))
  371.             END IF
  372.             IF (new_m% = 0) OR (new_m% < 1) OR (new_m% >12) THEN
  373.                 imbRC% = DoMsgBox(szDateErrMsg$, ERROR_CAPTION, MB_OK+MB_TASKMODAL+MB_ICONHAND)
  374.                 RestoreCursor CursorSave%
  375.                 GOTO ASKDATEL1
  376.             END IF
  377.             IF (new_y% = 0) THEN
  378.                 imbRC% = DoMsgBox(szDateErrMsg$, ERROR_CAPTION, MB_OK+MB_TASKMODAL+MB_ICONHAND)
  379.                 RestoreCursor CursorSave%
  380.                 GOTO ASKDATEL1
  381.             ELSEIF (new_y% < 1600) THEN
  382.                 new_y% = 1600
  383.             ELSEIF (new_y% > 9999) THEN
  384.                 new_y% = 9999
  385.             END IF
  386.             IF bDDOnDay% = TRUE THEN
  387.                 IF (new_m% = 1) OR (new_m% = 3) OR (new_m% = 5) OR (new_m% = 7) OR (new_m% = 8) OR (new_m% = 10) OR (new_m% = 12) THEN
  388.                     IF (new_d% < 1) OR (new_d% > 31) THEN
  389.                         imbRC% = DoMsgBox(szDateErrMsg$, ERROR_CAPTION, MB_OK+MB_TASKMODAL+MB_ICONHAND)
  390.                         RestoreCursor CursorSave%
  391.                         GOTO ASKDATEL1
  392.                     END IF
  393.                 ELSEIF (new_m% = 4) OR (new_m% = 6) OR (new_m% = 9) OR (new_m% = 11) THEN
  394.                     IF (new_d% < 1) OR (new_d% > 30) THEN
  395.                         imbRC% = DoMsgBox(szDateErrMsg$, ERROR_CAPTION, MB_OK+MB_TASKMODAL+MB_ICONHAND)
  396.                         RestoreCursor CursorSave%
  397.                         GOTO ASKDATEL1
  398.                     END IF
  399.                 ELSEIF (new_m% = 2) THEN
  400.                     IF (new_y% MOD 4) = 0 THEN    '' is not leap year, approx doesn't do full leap year checking
  401.                         IF (new_d% < 1) OR (new_d% > 29) THEN
  402.                             imbRC% = DoMsgBox(szDateErrMsg$, ERROR_CAPTION, MB_OK+MB_TASKMODAL+MB_ICONHAND)
  403.                             RestoreCursor CursorSave%
  404.                             GOTO ASKDATEL1
  405.                         END IF
  406.                     ELSE
  407.                         IF (new_d% < 1) OR (new_d% > 28) THEN    '' is leap year
  408.                             imbRC% = DoMsgBox(szDateErrMsg$, ERROR_CAPTION, MB_OK+MB_TASKMODAL+MB_ICONHAND)
  409.                             RestoreCursor CursorSave%
  410.                             GOTO ASKDATEL1
  411.                         END IF
  412.                     END IF
  413.                 END IF
  414.  
  415.                 start_d% = new_d%
  416.             END IF
  417.             start_m% = new_m%
  418.             start_y% = new_y%
  419.             '' Recalc end date
  420.             IF bDDOnDay% = TRUE THEN
  421.                 end_d% = start_d%
  422.             END IF
  423.             end_m% = (start_m%+iNumMonths%-1) MOD 12     ''DDD is zero based month
  424.             IF (start_m%+iNumMonths%) > 12 THEN
  425.                 end_y% = start_y% + 1
  426.             ELSE
  427.                 end_y% = start_y%
  428.             END IF
  429.             RestoreCursor CursorSave%
  430.         END IF
  431.  
  432.     ELSEIF sz$ = "REACTIVATE" THEN
  433.         GOTO ASKDATEL1
  434.     END IF
  435.     UIPop 1
  436. '$ENDIF
  437. END FUNCTION
  438.  
  439. '**
  440. '**     ChangeDate -
  441. '**         saves current start date, brings up simple edit dialog.
  442. '**         Value returned from edit control is validated.  Errors if
  443. '**         value is not a valid date or is out of range. Otherwise,
  444. '**         returns.
  445. '**     Arguements - None
  446. '**     Returns -   TRUE if date has changed
  447. '**                 FALSE if date hasn't changed
  448. '***************************************************************************
  449. FUNCTION GetInstallRes (szThemeRes$) STATIC AS STRING
  450.     ResList$ = "ResList"
  451.     FOR i% = 1 TO MAX_NUM_RES STEP 1
  452.         szRes$ = GetNthFieldFromIniString (szThemeRes$, i%)
  453.         IF szRes$ <> "" THEN
  454.             AddListItem ResList$, szRes$
  455.         ELSE
  456.             EXIT FOR
  457.         END IF
  458.     NEXT i%
  459.  
  460.     iX% = GetScreenWidth()
  461.     iY% = GetScreenHeight()
  462.  
  463.     IF iX% >= 1024 THEN
  464.         szUserRes$ = INI_KEY_XGA
  465.     ELSEIF iX% >= 640 THEN
  466.         IF iY% >= 480 THEN
  467.             szUserRes$ = INI_KEY_VGA
  468.         ELSE
  469.             szUserRes$ = INI_KEY_EGA
  470.         END IF
  471.     ELSE
  472.         szUserRes$ = INI_KEY_VGA
  473.     END IF
  474.  
  475.     szInstallResID$ = ChooseResolution(szUserRes$, ResList$)
  476.  
  477.  
  478.     GetInstallRes = szInstallResID$
  479.  
  480. END FUNCTION
  481.  
  482. '**
  483. '**     ChooseResolution -
  484. '**         Displays dialog asking the user to choose the resolution
  485. '**         to install.  Only displays options for the resolutions
  486. '**         supported by the theme pack. If only res supported is
  487. '**         independent, then no dialog is given and ind gets installed.
  488. '**     Arguements - szDefaultRes$ - resolution currently being displayed.
  489. '**                  ResList$ - symbol to list of supported resolutions
  490. '**     Returns - Final resolution choice as String of ResID. If "" then
  491. '**               EXIT button was pressed.  If "0" then no resolutions
  492. '**               are supported.
  493. '***************************************************************************
  494.  
  495. FUNCTION ChooseResolution (szDefaultRes$, ResList$) STATIC AS STRING
  496.  
  497. DIM pStrBuf AS POINTER TO STRING *256
  498.  
  499.     RadioText$ = "RadioText"
  500.     RadioDefault$ = "RadioDefault"
  501.     IniKeyList$ = "IniKeyList"
  502.     IF GetListLength(ResList$) < 1 THEN
  503.         ResChoice$ = "0"
  504.         GOTO RES_CHOICE_DONE
  505.     ELSEIF GetListLength(ResList$) = 1 THEN
  506.         ResChoice$ = GetListItem(ResList$, 1)
  507.         GOTO RES_CHOICE_DONE
  508.     ELSE
  509.         FOR i% = 1 TO GetListLength(ResList$) STEP 1
  510.             szRes$ = GetListItem(ResList$, i%)
  511.             SELECT CASE szRes$
  512.                 CASE INI_KEY_IND
  513.                     ResChoice$ = INI_KEY_IND
  514.                     GOTO RES_CHOICE_DONE
  515.                 CASE INI_KEY_XGA
  516.                     AddListItem IniKeyList$, INI_KEY_XGA
  517.                     AddListItem RadioText$, RES_TEXT_XGA$
  518.                 CASE INI_KEY_VGA
  519.                     AddListItem IniKeyList$, INI_KEY_VGA
  520.                     AddListItem RadioText$, RES_TEXT_VGA$
  521.                 CASE INI_KEY_EGA
  522.                     AddListItem IniKeyList$, INI_KEY_EGA
  523.                     AddListItem RadioText$, RES_TEXT_EGA$
  524.                 CASE ELSE
  525.                     AddListItem IniKeyList$, INI_KEY_VGA
  526.                     AddListItem RadioText$, RES_TEXT_VGA$
  527.             END SELECT
  528.         NEXT i%
  529.         WHILE (GetListLength(RadioText$) < 3)
  530.             AddListItem RadioText$, ""
  531.         WEND
  532.         FOR i% = 1 TO GetListLength(IniKeyList$) STEP 1
  533.             SELECT CASE (GetListItem(IniKeyList$, i%))
  534.                 CASE INI_KEY_XGA
  535.                     iXGA% = i%
  536.                 CASE INI_KEY_VGA
  537.                     iVGA% = i%
  538.                 CASE INI_KEY_EGA
  539.                     iEGA% = i%
  540.                     PRINT "EGA IS AT " + STR$(iEGA%)
  541.             END SELECT
  542.         NEXT i%
  543.         SELECT CASE szDefaultRes$
  544.             CASE INI_KEY_XGA
  545.                 IF iXGA% <> 0 THEN
  546.                     SetSymbolValue RadioDefault$, LTRIM$(STR$(iXGA%))
  547.                 ELSEIF iVGA% <> 0 THEN
  548.                     bNoResMatch% = TRUE
  549.                     SetSymbolValue RadioDefault$, LTRIM$(STR$(iVGA%))
  550.                 ELSEIF iEGA% <> 0 THEN
  551.                     bNoResMatch% = TRUE
  552.                     SetSymbolValue RadioDefault$, LTRIM$(STR$(iEGA%))
  553.                 ELSE
  554.                     ResChoice$ = "0"
  555.                     GOTO RES_CHOICE_DONE
  556.                 END IF
  557.             CASE INI_KEY_VGA
  558.                 IF iVGA% <> 0 THEN
  559.                     SetSymbolValue RadioDefault$, LTRIM$(STR$(iVGA%))
  560.                 ELSEIF iEGA% <> 0 THEN
  561.                     bNoResMatch% = TRUE
  562.                     SetSymbolValue RadioDefault$, LTRIM$(STR$(iEGA%))
  563.                 ELSE
  564.                     ResChoice$ = "0"
  565.                     GOTO RES_CHOICE_DONE
  566.                 END IF
  567.             CASE INI_KEY_EGA
  568.                 IF iEGA% <> 0 THEN
  569.                     SetSymbolValue RadioDefault$, LTRIM$(STR$(iEGA%))
  570.                 ELSE
  571.                     ResChoice$ = "0"
  572.                     GOTO RES_CHOICE_DONE
  573.                 END IF
  574.             CASE ELSE
  575.                     ResChoice$ = "0"
  576.                     GOTO RES_CHOICE_DONE
  577.         END SELECT
  578.     END IF
  579.  
  580.     ''IF bNoResMatch% = TRUE THEN
  581.     ''    imbRC% = DoMsgBox(NO_RES_MATCH, RES_ERROR, MB_OK+MB_TASKMODAL+MB_ICONINFORMATION)
  582.     ''END IF
  583.  
  584. CHOOSE_RES_DLG:
  585.     sz$ = UIStartDlg(CUIDLL$, RESCHOICES, "FRadioDlgProc", RESHELP, HELPPROC$)
  586.  
  587.     IF sz$ = "CONTINUE" THEN
  588.         ResChoice$ = GetListItem(IniKeyList$, VAL(GetSymbolValue("ButtonChecked")))
  589.         IF ResChoice$ <> szDefaultRes$ THEN
  590.             ALLOCATE pStrBuf, 2
  591.             SELECT CASE szDefaultRes$
  592.                 CASE INI_KEY_XGA
  593.                     szCurRes$ = EXPANDED_XGA
  594.                 CASE INI_KEY_VGA
  595.                     szCurRes$ = EXPANDED_VGA
  596.                 CASE INI_KEY_EGA
  597.                     szCurRes$ = EXPANDED_EGA
  598.                 CASE ELSE
  599.                     szCurRes$ = RES_UNKNOWN
  600.             END SELECT
  601.             pStrBuf[TEXT1] = CONFIRM_RES_DLGTEXT_1 + " (" + szCurRes$ + "). " + CONFIRM_RES_DLGTEXT_1Pt2
  602.             pStrBuf[TEXT2] = CONFIRM_RES_DLGTEXT_2+CONFIRM_RES_DLGTEXT_2Pt2
  603.  
  604.             DlgCaption$ = "DlgCaption"
  605.             SetSymbolValue DlgCaption$, CONFIRM_RES_DLGCAPTION
  606.  
  607.             ReplaceListItem CONFIRMTEXTIN$, 1, pStrBuf[TEXT1]
  608.             ReplaceListItem CONFIRMTEXTIN$, 2, pStrBuf[TEXT2]
  609.  
  610.             DEALLOCATE pStrBuf
  611. CONFIRM_RES:
  612.             sz$ = UIStartDlg(CUIDLL$, CBYESNO, "FInfoXDlgProc", 0, "")
  613.  
  614.             IF sz$ = "CONTINUE" THEN
  615.                 UIPop 1
  616.             ELSEIF sz$ = "REACTIVATE" THEN
  617.                 GOTO CONFIRM_RES
  618.             ELSE   ''No
  619.                 UIPop 1
  620.                 GOTO CHOOSE_RES_DLG
  621.             END IF
  622.         END IF
  623.         UIPop 1
  624.     ELSEIF sz$ = "REACTIVATE" THEN
  625.         GOTO CHOOSE_RES_DLG
  626.     ELSE
  627.         ResChoice$ = ""
  628.         UIPop 1
  629.     END IF
  630. RES_CHOICE_DONE:
  631.  
  632.     ChooseResolution = ResChoice$
  633. END FUNCTION
  634.  
  635. '**
  636. '**     MsgYesNo -
  637. '**         Displays dialog asking the user to choose yes or no
  638. '**
  639. '**     Arguements - szMsgPart1$ - first part of message
  640. '**                  szMsgPart2$ - second part of message
  641. '**                  szMsgCaption$ - dialog caption
  642. '**     Returns - YES = 1 - user pressed YES
  643. '**               NO = 0 - user pressed NO
  644. '**
  645. '***************************************************************************
  646.  
  647. FUNCTION MsgYesNo(szMsgPart1$, szMsgPart2$, szMsgCaption$) STATIC AS INTEGER
  648.  
  649. DIM pDlgTxt AS POINTER TO STRING *256
  650.  
  651. INIT_DIALOG:
  652.             ALLOCATE pDlgTxt, 2
  653.             pDlgTxt[TEXT1] = szMsgPart1$
  654.             pDlgTxt[TEXT2] = szMsgPart2$
  655.  
  656.             DlgCaption$ = "DlgCaption"
  657.             SetSymbolValue DlgCaption$, szMsgCaption$
  658.  
  659.             ReplaceListItem CONFIRMTEXTIN$, 1, pDlgTxt[TEXT1]
  660.             ReplaceListItem CONFIRMTEXTIN$, 2, pDlgTxt[TEXT2]
  661.  
  662.             DEALLOCATE pDlgTxt
  663.  
  664.  
  665.             sz$ = UIStartDlg(CUIDLL$, CBYESNO, "FInfoXDlgProc", 0, "")
  666.  
  667.             IF sz$ = "CONTINUE" THEN
  668.                  MsgYesNo = YES
  669.                  UIPop 1
  670.             ELSEIF sz$ = "REACTIVATE" THEN
  671.                  GOTO INIT_DIALOG
  672.             ELSE
  673.                  MsgYesNo = NO
  674.                  UIPop 1
  675.             END IF
  676. END FUNCTION
  677.